home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / finger-1 / my_units / myutilit.uni < prev    next >
Text File  |  1992-02-24  |  4KB  |  136 lines

  1. unit MyUtilities;
  2.  
  3. { This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
  4. { Copyright 1991-1992 Peter N Lewis }
  5. { If you use this code, you must give me credit in your about box and documentation }
  6. { This is part of my generic library of routines }
  7.  
  8. interface
  9.  
  10.     const
  11.         about_dialog_ID = 128;
  12.         help_dialog_ID = 129;
  13.  
  14.     var
  15.         sysenv: sysEnvRec; { * - Setup by InitUtilities }
  16.         system7: boolean; { * }
  17.         has_waitNextEvent: boolean; { * }
  18.         has_appleEvents: boolean; { * }
  19.         has_findfolder: boolean; { * }
  20.         has_newStdFile: boolean; { * }
  21.         has_HelpMgr: boolean; { * }
  22.         has_colorQD: boolean; { * }
  23.         in_foreground: boolean; { * }
  24.         app_resfile: integer; { * }
  25.         about_dialog, help_dialog: dialogPtr;
  26.  
  27.     procedure InitUtilities;
  28.     function WaitGetNextEvent (em: integer; var er: eventRecord; sleep: longInt; rgn: rgnHandle): boolean; { * }
  29.     function CheckCancel: boolean;
  30.     procedure DoHelp;
  31.     procedure DoAbout;
  32.     function SimpleClose (wp: windowPtr): boolean;
  33.         { return true if you have to do something }
  34.  
  35. implementation
  36.  
  37.     uses
  38.         MyTypes, Traps, MyUtils;
  39.  
  40. {$S Init}
  41.     procedure InitUtilities;
  42.         var
  43.             oe: OSErr;
  44.             gv: longInt;
  45.     begin
  46.         about_dialog := nil;
  47.         help_dialog := nil;
  48.         app_resfile := CurResFile;
  49.         oe := SysEnvirons(kSysEnvironsVersion, sysEnv);
  50.         system7 := sysenv.systemVersion >= $0700;
  51.         has_colorqd := sysenv.hasColorQD;
  52.         has_waitNextEvent := TrapAvailable(_WaitNextEvent);
  53.         in_foreground := true;
  54.         oe := Gestalt(gestaltAppleEventsAttr, gv);
  55.         has_appleEvents := (oe = noErr) and (gv = 1);
  56.         oe := Gestalt(gestaltFindFolderAttr, gv);
  57.         has_findfolder := (oe = noErr) and (BTST(gv, gestaltFindFolderPresent));
  58.         oe := Gestalt(gestaltStandardFileAttr, gv);
  59.         has_newStdFile := (oe = noErr) and (BTST(gv, gestaltStandardFile58));
  60.         oe := Gestalt(gestaltHelpMgrAttr, gv);
  61.         has_HelpMgr := (oe = noErr) and (BTST(gv, gestaltHelpMgrPresent));
  62.     end;
  63.  
  64. {$S}
  65.     function WaitGetNextEvent (em: integer; var er: eventRecord; sleep: longInt; rgn: rgnHandle): boolean;
  66.     begin
  67.         if has_waitNextEvent then begin    {put us to sleep forever under MultiFinder}
  68.             WaitGetNextEvent := WaitNextEvent(em, er, sleep, nil);
  69.         end
  70.         else begin
  71.             SystemTask;                    {must be called if using GetNextEvent}
  72.             WaitGetNextEvent := GetNextEvent(em, er);
  73.         end;
  74.     end;
  75.  
  76. {$S Util2}
  77.     function CheckCancel: boolean;
  78.         var
  79.             er: eventRecord;
  80.     begin
  81.         if GetNextEvent(everyEvent, er) then
  82.             with er do
  83.                 CheckCancel := (what = keyDown) and (BAND(message, charCodeMask) = ord('.')) and (BAND(modifiers, cmdKey) <> 0)
  84.         else
  85.             CheckCancel := false;
  86.     end;
  87.  
  88. {$S Util2}
  89.     procedure DoAbout;
  90.     begin
  91.         if about_dialog <> nil then begin
  92.             if FrontWindow <> about_dialog then
  93.                 SelectWindow(about_dialog);
  94.         end
  95.         else begin
  96.             UseResFile(app_resfile);
  97.             SetVersionParamText('', '');
  98.             about_dialog := GetNewDialog(about_dialog_id, nil, POINTER(-1));
  99.         end;
  100.     end;
  101.  
  102. {$S Util2}
  103.     procedure DoHelp;
  104.         var
  105.             a: integer;
  106.     begin
  107.         if help_dialog <> nil then begin
  108.             if FrontWindow <> help_dialog then
  109.                 SelectWindow(help_dialog);
  110.         end
  111.         else begin
  112.             UseResFile(app_resfile);
  113.             SetVersionParamText('', '');
  114.             help_dialog := GetNewDialog(help_dialog_id, nil, POINTER(-1));
  115.         end;
  116.     end;
  117.  
  118. {$S Util2}
  119.     function SimpleClose (wp: windowPtr): boolean;
  120.         { return true if you have to do something }
  121.     begin
  122.         if wp = about_dialog then begin
  123.             DisposDialog(about_dialog);
  124.             about_dialog := nil;
  125.             SimpleClose := false;
  126.         end
  127.         else if wp = help_dialog then begin
  128.             DisposDialog(help_dialog);
  129.             help_dialog := nil;
  130.             SimpleClose := false;
  131.         end
  132.         else
  133.             SimpleClose := true;
  134.     end;
  135.  
  136. end.